package com.bruce.starts.demo.test.jdk;

import org.apache.ibatis.reflection.TypeParameterResolver;
import org.hibernate.validator.cfg.context.ParameterTarget;
import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.Map;

public class TypeDemo {}
//    SubClassA<Long> sa = new SubClassA<>();
//    public static void main(String[] args) throws Exception {
//        Field f = ClassA.class.getDeclaredField("map");
//        System.out.println(f.getGenericType());
//        System.out.println(f.getGenericType() instanceof ParameterTarget);
//        Type type = TypeParameterResolver.resolveFieldType(f, ParameterizedTypeImpl
//                .make(SubClassA.class, new Type[]{Long.class},TypeDemo.class));
//        System.out.println(type.getClass());
//        ParameterizedType p = (ParameterizedType) type ;
//        System.out.println(p.getRawType());
//    }
//}
//
//class SubClassA<T> extends ClassA<T,T>{
//
//}
//class ClassA<K,V>{
//    protected Map<K,V> map;
//
//    public Map<K, V> getMap() {
//        return map;
//    }
//
//    public void setMap(Map<K, V> map) {
//        this.map = map;
//    }
//}
